Java Swing ile Veritabanı işlemleri

Java Swing PostgreSQL CRUD işlemleri, masaüstü uygulamalarında veri ekleme, listeleme, güncelleme ve silme işlemlerini yönetmek için sık kullanılan yapılardan biridir.

Bu rehberde Java Swing ile PostgreSQL veritabanında CRUD işlemleri nasıl yapılır adım adım inceleyeceğiz. Veritabanı bağlantısı, DAO yapısı, entity sınıfları ve Swing arayüzü üzerinden çalışan örnek bir malzeme takip uygulamasını sade ve anlaşılır şekilde ele alacağız.

Kısa özet: Java Swing arayüzü + PostgreSQL veritabanı + JDBC bağlantısı + DAO yapısı ile tam bir CRUD uygulaması oluşturacağız.

Java Swing PostgreSQL CRUD Projesi Nedir?

CRUD, veritabanı tabanlı uygulamalarda en temel dört işlemi ifade eder: Create, Read, Update ve Delete. Bu örnekte Java Swing ile masaüstü arayüzü oluşturulurken, PostgreSQL tarafında veriler tutulur ve JDBC üzerinden bağlantı sağlanır.

Projemizde kullanıcı; malzeme kaydı ekleyebilir, mevcut kayıtları listeleyebilir, seçilen kaydı güncelleyebilir ve silebilir. Böylece hem arayüz tarafını hem de veritabanı işlemlerini aynı proje içinde görmüş oluruz.

Gerekli Araçlar

Bu örneği hazırlamak için aşağıdaki araçlar kullanılır:

  • Java 11
  • Eclipse IDE
  • WindowBuilder eklentisi
  • PostgreSQL veritabanı
  • PostgreSQL JDBC Driver
Not: Swing tabanlı projelerde ekran tasarımını hızlandırmak için WindowBuilder oldukça pratiktir. PostgreSQL tarafında ise JDBC sürücüsünün projeye eklenmesi zorunludur.

PostgreSQL Veritabanı Bağlantısı

İlk adımda veritabanı bağlantısını yöneten bir sınıf oluşturulur. Bu sınıf içinde bağlantı adresi, kullanıcı adı ve şifre gibi bilgiler tutulur.

PostgreSQL üzerinde örnekte kullanılan yapı için bir malzeme veritabanı oluşturabilir ve ilgili tabloyu hazırlayabilirsiniz. Ardından JDBC ile bağlantı kuran yardımcı sınıfı yazmanız gerekir.

public class ConnectDb {

    private static final String url = "jdbc:postgresql://localhost:5432/malzeme";
    private static final String user = "postgres";
    private static final String password = "postgres";

    public static Connection baglanDB() {
        Connection con = null;
        try {
            con = DriverManager.getConnection(url, user, password);
        } catch (Exception e) {
            con = null;
        }
        return con;
    }
}

Bu yapı sayesinde uygulamanın farklı yerlerinden tekrar tekrar bağlantı kodu yazmak yerine merkezi bir yöntem kullanılmış olur.

DAO Katmanında CRUD İşlemleri

Veritabanı işlemlerini doğrudan arayüz sınıfı içine yazmak yerine, ayrı bir DAO (Data Access Object) katmanında toplamak daha temiz bir mimari sağlar. Böylece ekleme, güncelleme, silme ve listeleme işlemleri tek bir sınıfta yönetilir.

Kayıt Ekleme

Ekleme işlemi için INSERT INTO sorgusu kullanılır. Formdan gelen bilgiler PreparedStatement ile veritabanına güvenli şekilde gönderilir.

private String INSERT_MALZEME_SQL =
    "INSERT INTO malzeme.malzeme (malzeme_adi, durumu, aciklama, adet, marka, garanti_suresi) VALUES (?, ?, ?, ?, ?, ?)";

public boolean insertKayit(Malzeme malzeme) throws SQLException {
    try {
        Connection connection = ConnectDb.baglanDB();
        PreparedStatement preparedStatement = connection.prepareStatement(INSERT_MALZEME_SQL);
        preparedStatement.setString(1, malzeme.getMalzeme_adi());
        preparedStatement.setInt(2, malzeme.getDurum());
        preparedStatement.setString(3, malzeme.getAciklama());
        preparedStatement.setInt(4, malzeme.getAdet());
        preparedStatement.setString(5, malzeme.getMarka());
        preparedStatement.setString(6, malzeme.getGarantiSuresi());
        preparedStatement.executeUpdate();
        return true;
    } catch (SQLException e) {
        printSQLException(e);
    }
    return false;
}

Kayıt Güncelleme

Güncelleme işlemi için seçilen kaydın kimlik bilgisi alınır ve ilgili alanlar yeni değerlerle değiştirilir.

Kayıt Silme

Silme işleminde çoğunlukla seçilen satırın id bilgisi kullanılır. Kullanıcıdan onay almak masaüstü uygulamalarında iyi bir kullanıcı deneyimi sağlar.

Kayıt Listeleme

Listeleme tarafında tüm veriler çekilerek JTable üzerinde gösterilir. Ayrıca istenirse belirli bir kayıt id ile de getirilebilir.

Entity Sınıfı Oluşturma

Veritabanı tablosundaki alanları Java içinde temsil etmek için entity sınıfları oluşturulur. Bu sınıflar tablo kolonlarının karşılığıdır ve uygulama içinde veri taşımak için kullanılır.

public class Malzeme {
    private int id;
    private String malzeme_adi;
    private String marka;
    private String aciklama;
    private String garantiSuresi;
    private int durum;
    private int adet;
}

Bu sınıfa getter, setter ve constructor metotlarının eklenmesi gerekir. Alan isimlerinin veritabanı yapısıyla uyumlu olması kod okunabilirliği açısından büyük kolaylık sağlar.

Swing Arayüz Tasarımı

Uygulamanın kullanıcıyla etkileşime geçen kısmı Swing arayüzüdür. Bu örnekte ekran tasarımı için WindowBuilder kullanılmıştır. Böylece butonlar, tablo alanı, metin kutuları ve paneller sürükle-bırak mantığıyla daha hızlı hazırlanabilir.

Arayüzde temel olarak şu alanlar bulunur:

  • Malzeme adı alanı
  • Marka alanı
  • Garanti süresi alanı
  • Kayıt ekle butonu
  • Güncelle butonu
  • Sil butonu
  • JTable ile kayıt listesi
İpucu: JTable üzerinde satır seçildiğinde form alanlarını otomatik doldurmak, güncelleme ve silme işlemlerini çok daha kullanışlı hale getirir.

Tablo Listeleme ve Form İşlemleri

CRUD uygulamalarında en önemli deneyim noktalarından biri, form ile tablo arasındaki senkronizasyondur. Kullanıcı tablo üzerinde bir kayıt seçtiğinde ilgili bilgiler form alanlarına aktarılır. Böylece hem güncelleme hem de silme işlemleri daha rahat yapılır.

Yeni kayıt eklendikten sonra form temizlenmeli ve tablo yeniden yüklenmelidir. Aynı şekilde güncelleme ve silme sonrasında da liste tekrar yenilenmelidir.

private void temizle() {
    txt_adi.setText("");
    txt_garanti.setText("");
    txt_marka.setText("");
    txt_siraNo.setText("");
    btnEkle.setEnabled(true);
    btnGunle.setEnabled(false);
    btnSil.setEnabled(false);
}

Bu yöntem kullanıcı hatalarını azaltır ve uygulamanın daha düzenli çalışmasını sağlar.

Sık Yapılan Hatalar

  • JDBC driver dosyasını projeye eklememek
  • Veritabanı bağlantı bilgisini yanlış yazmak
  • SQL sorgularında tablo veya kolon adlarını hatalı kullanmak
  • Form alanlarını doğrulamadan insert veya update yapmak
  • JTable modelini işlem sonrası yenilememek
  • Exception yönetimini ihmal etmek

Özellikle bağlantı ve SQL hatalarında ayrıntılı hata mesajı üretmek, geliştirme sürecini ciddi şekilde hızlandırır.

Sık Sorulan Sorular

Java Swing ile PostgreSQL CRUD yapmak zor mu?

Hayır. JDBC bağlantısı, DAO yapısı ve basit bir Swing formu kurulduğunda CRUD işlemleri oldukça anlaşılır hale gelir.

PostgreSQL yerine başka veritabanı kullanılabilir mi?

Evet. JDBC destekleyen farklı veritabanlarıyla benzer yapı kurulabilir. Ancak bağlantı ayarları ve driver dosyası değişir.

DAO kullanmak neden önemlidir?

DAO, veritabanı işlemlerini arayüzden ayırır. Bu da daha düzenli, test edilebilir ve sürdürülebilir kod yazmayı kolaylaştırır.

JTable neden kullanılır?

JTable, veritabanından gelen kayıtları tablo şeklinde göstermek ve kullanıcıya düzenli bir liste sunmak için kullanılır.

Sonuç

Bu rehberde Java Swing ile PostgreSQL CRUD işlemleri nasıl yapılır adım adım inceledik. Önce veritabanı bağlantısını kurduk, ardından DAO katmanında ekleme, silme, güncelleme ve listeleme işlemlerini ele aldık. Son olarak Swing arayüzü ile kullanıcı etkileşimini tamamladık.

Eğer Java masaüstü uygulamaları geliştiriyorsanız bu yapı; form yönetimi, tablo listeleme ve veritabanı bağlantısı mantığını öğrenmek için oldukça iyi bir başlangıçtır.

Etiketler: java swing, postgresql, crud, jdbc, java masaüstü uygulama

Son Güncelleme: 2026

Latest Software Developers - Yazılım Blog Yazarı Profil Resmi

Yazar

LatestSoftwareDevelopers

Blog where the most up-to-date software is followed. (En güncel yazılımların takip edildiği blog sitesi)

Java ile ilgili yorumlar

Yorum Paylaş

EMail Zorunlu alanlar * *